import java.util.HashMap;
import java.util.Map;

class Solution {
    public int lenLongestFibSubseq(int[] arr) {
         int len = arr.length ;
         Map<Integer,Integer> hash = new HashMap<>() ;
         for(int i=0 ;i < len ; i ++){
            hash.put(arr[i] , i) ; 
         }
         int[][] dp = new int[len][len] ; 
         dp[0][0] = 1 ;
         int max = 0 ; 
         for(int i= 0 ; i< len ; i ++){
            for(int j = i+1 ; j < len ; j++){
                 dp[i][j] = 2 ;
                 int a = hash.getOrDefault(arr[j]-arr[i] , -1) ;
                 if(a != -1 && a < i){
                    dp[i][j] = Math.max(dp[i][j] , dp[a][i]+1) ; 
                 }
                 max = Math.max(dp[i][j] , max) ;
            }
         }
        return max==2?0:max ;
    }
}